package com.omiis.wechat.performance_test2;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;

public class VAgentTest {

	private static Logger logger = LoggerFactory.getLogger(VAgentTest.class);

	public static void main(String[] args) {
		int vUserLimit = 1;
//		List<String> agents = new ArrayList<String>();
//		agents.add("9001");
//		agents.add("9026");
		if(args==null || args.length==0){
			System.err.println("未指定坐席！");
			System.exit(-1);
		}
		for (int i = 0; i < vUserLimit; i++) {
			String agentId = args[0];
			VUser vUser = new VUser(agentId, "AGENT");
			Thread t = new Thread(vUser);
			t.start();
		}
		
		try {
			Thread.currentThread().sleep(Integer.MAX_VALUE);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	static {
		File logbackFile = new File(IPreferences.LOG_BACK_CONFIG);
		if (logbackFile.exists()) {
			LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
			JoranConfigurator configurator = new JoranConfigurator();
			configurator.setContext(lc);
			lc.reset();
			try {
				configurator.doConfigure(logbackFile);
			} catch (JoranException e) {
				e.printStackTrace(System.err);
				System.exit(-1);
			}
		}
	}
	//
	// static class VAgent implements Runnable {
	// private Map<String, String> result = new HashMap<String, String>();
	// private String userId = "";
	// private String conversationId = "";
	// private String senderRole = "CUSTOMER";
	// private String senderId = "";
	// private String channelId = "";
	//
	// public String getConversationId() {
	// return conversationId;
	// }
	//
	// public void setConversationId(String conversationId) {
	// this.conversationId = conversationId;
	// }
	//
	// public String getSenderRole() {
	// return senderRole;
	// }
	//
	// public void setSenderRole(String senderRole) {
	// this.senderRole = senderRole;
	// }
	//
	// public String getSenderId() {
	// return senderId;
	// }
	//
	// public void setSenderId(String senderId) {
	// this.senderId = senderId;
	// }
	//
	// private List<String> txtMessages = new ArrayList<>();
	//
	// public VAgent(String userId) {
	// this.setUserId(userId);
	// this.setSenderId(getUserId());
	// this.setConversationId(UUID.randomUUID().toString());
	// this.setSenderRole("AGENT");
	// this.setChannelId("WECHAT");
	// this.setTxtMessages(MessageUtil.getTxtMessages());
	// }
	//
	// @Override
	// public void run() {
	// logger.info("开始测试，微信用户：{}。", getUserId());
	// IOmiisMessager omiis = new OmiisMessager();
	// getResult().put("status", "");
	// OmiisResponseMessageHandler handler = new
	// OmiisResponseMessageHandler(null);
	// omiis.registerMessageListener(handler);
	// omiis.connect();
	// // try {
	// // Thread.currentThread().sleep(10 * 1000);
	// // } catch (InterruptedException e) {
	// // e.printStackTrace();
	// // }
	// boolean wait = false;
	// int limit = 5;
	// int i = 0;
	// do {
	// try {
	// synchronized (getResult()) {
	// getResult().wait(20 * 1000);
	// }
	// } catch (InterruptedException e) {
	// logger.error(e.getMessage(), e);
	// }
	// i++;
	// wait = StringUtils.isEmpty(getResult().get("status"));
	// } while (wait && i <= limit);
	// omiis.disconnect();
	// logger.info("微信用户{}，通讯完成，退出。", getUserId());
	// }
	//
	// /**
	// * @return the userId
	// */
	// public String getUserId() {
	// return userId;
	// }
	//
	// /**
	// * @param userId
	// * the userId to set
	// */
	// public void setUserId(String userId) {
	// this.userId = userId;
	// }
	//
	// /**
	// * @return the channelId
	// */
	// public String getChannelId() {
	// return channelId;
	// }
	//
	// /**
	// * @param channelId
	// * the channelId to set
	// */
	// public void setChannelId(String channelId) {
	// this.channelId = channelId;
	// }
	//
	// /**
	// * @return the txtMessages
	// */
	// public List<String> getTxtMessages() {
	// return txtMessages;
	// }
	//
	// /**
	// * @param txtMessages
	// * the txtMessages to set
	// */
	// public void setTxtMessages(List<String> txtMessages) {
	// this.txtMessages = txtMessages;
	// }
	//
	// /**
	// * @return the result
	// */
	// public Map<String, String> getResult() {
	// return result;
	// }
	//
	// /**
	// * @param result
	// * the result to set
	// */
	// public void setResult(Map<String, String> result) {
	// this.result = result;
	// }
	// }
}
